/** 
 * @ClassName:     SmsSend.java 
 * @Description:   TODO(用一句话描述该文件做什么)  
 * @author         wangzhe  
 * @Date           2019年7月22日 上午9:54:17  
 */  


package com.huitone.smspfm.oldclient.dao.entity;

import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.bin.common.utils.StringUtils;
import com.huitone.smspfm.oldclient.model.MtGroup;
import com.huitone.smspfm.oldclient.model.MtSms;

public class SmsSend {

//  短信流水号
	private String serialNo;
	
//  客户帐号
	private String clientName;

//  发送端口
	private String sendPort;

//  接收号码
	private String mobileNo;
	
//  发送内容
	private String content;
	
//  wap地址    本字段已弃用，固定空着。
	private String wapUrl = "";
	
//	短信类型    本字段已弃用，固定填1。
	private Integer mesgType = 1;
	
//	状态报告    本字段已弃用，固定填1。	
	private Integer srr = 1;
	


	public String getSerialNo() {
		return serialNo;
	}



	public void setSerialNo(String serialNo) {
		this.serialNo = serialNo;
	}



	public String getClientName() {
		return clientName;
	}



	public void setClientName(String clientName) {
		this.clientName = clientName;
	}



	public String getSendPort() {
		return sendPort;
	}



	public void setSendPort(String sendPort) {
		this.sendPort = sendPort;
	}



	public String getMobileNo() {
		return mobileNo;
	}



	public void setMobileNo(String mobileNo) {
		this.mobileNo = mobileNo;
	}



	public String getContent() {
		return content;
	}



	public void setContent(String content) {
		this.content = content;
	}



	public String getWapUrl() {
		return wapUrl;
	}



	public void setWapUrl(String wapUrl) {
		this.wapUrl = wapUrl;
	}



	public Integer getMesgType() {
		return mesgType;
	}



	public void setMesgType(Integer mesgType) {
		this.mesgType = mesgType;
	}



	public Integer getSrr() {
		return srr;
	}



	public void setSrr(Integer srr) {
		this.srr = srr;
	}









	@Override
	public String toString() {
		return "SmsSend [serialNo=" + serialNo + ", clientName=" + clientName + ", sendPort=" + sendPort + ", mobileNo="
				+ mobileNo + ", content=" + content + ", wapUrl=" + wapUrl + ", mesgType=" + mesgType + ", srr=" + srr+ "]";
	}
	
	public MtSms build() {
		MtSms mtSms = new MtSms();
		mtSms.setSerialno(this.getSerialNo());
		mtSms.setClientname(this.getClientName());
		mtSms.setSendport(this.getSendPort());
		mtSms.setMobileno(this.getMobileNo());
		mtSms.setContent(this.getContent());
		mtSms.setMesgtype(this.getMesgType().toString());
		mtSms.setSrr(this.getSrr().toString());
		String content = mtSms.getContent();
        
        if (StringUtils.getMatchCount(content, "<1>.*?</1>") > 0) {
        	
        	Matcher splitCountM = Pattern.compile("<1>(.*)</1>").matcher(content);
            while(splitCountM.find()) {
            	mtSms.setSplitCount(StringUtils.toIntegerP(splitCountM.group(1)));
            }
            
            Matcher splitIndexM = Pattern.compile("<2>(.*)</2>").matcher(content);
            while(splitIndexM.find()) {
            	mtSms.setSplitIndex(StringUtils.toIntegerP(splitIndexM.group(1)));
            }
            
            Matcher splitContentM = Pattern.compile("<3>(.*)</3>").matcher(content);
            while(splitContentM.find()) {
            	mtSms.setContent(splitContentM.group(1));
            }
            
            Matcher smscodeM = Pattern.compile("<4>(.*)</4>").matcher(content);
            while(smscodeM.find()) {
            	mtSms.setSmscode(StringUtils.toIntegerP(smscodeM.group(1)));
            }
        }
        
        mtSms.setReadTime(new Date());
        
        /**
         * @desc 对于旧短信平台: 
         *     短信唯一的顺序号，不超过50位，是本表的主键，生成规则如下：客户帐号+ 2位通道代码+2位业务代码+YYYYMMDDHHMISS（14位）+顺序号（n位）
         * 
         * @todo 提取两位业务代码
         */
        int length = StringUtils.length(mtSms.getClientname()); 
        int start = length + 2; 
        int end = start + 2;
        mtSms.setServiceCode(StringUtils.substring(mtSms.getSerialno(), start, end));
		
		return mtSms;
	}

}
